package com.example.teaching_server.exception;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
 * 学期未找到异常
 * 专门用于处理学期相关资源不存在的异常情况
 *
 * @author 开发团队
 * @since 1.0.0
 */
@ResponseStatus(HttpStatus.NOT_FOUND)
public class TermNotFoundException extends ResourceNotFoundException {

    /**
     * 构造函数
     *
     * @param termId 学期ID
     */
    public TermNotFoundException(Long termId) {
        super("学期", termId);
    }

    /**
     * 构造函数
     *
     * @param message 错误消息
     */
    public TermNotFoundException(String message) {
        super(message);
    }

    /**
     * 构造函数
     *
     * @param termId 学期ID
     * @param message 错误消息
     */
    public TermNotFoundException(Long termId, String message) {
        super(String.format("学期[id=%d]未找到: %s", termId, message));
    }

    /**
     * 创建学期未找到异常
     *
     * @param termId 学期ID
     * @return TermNotFoundException实例
     */
    public static TermNotFoundException of(Long termId) {
        return new TermNotFoundException(termId);
    }

    /**
     * 创建学期未找到异常（自定义消息）
     *
     * @param message 错误消息
     * @return TermNotFoundException实例
     */
    public static TermNotFoundException withMessage(String message) {
        return new TermNotFoundException(message);
    }

    /**
     * 创建学期未找到异常（带详细消息）
     *
     * @param termId 学期ID
     * @param message 详细消息
     * @return TermNotFoundException实例
     */
    public static TermNotFoundException withDetails(Long termId, String message) {
        return new TermNotFoundException(termId, message);
    }
}
